/**
 * @author CKC
 * @CreateTime 2022/6/7 20:48
 */
package JUC.CompletableFuture;

/*
CompletableFuture: 对Future的增强，可以实现每一个阶段完成什么事
  CompleteFuture :
  获取结果和触发计算：
      1. get()    会阻塞，编译时需要对异常处理
      2. get(long,TimeUnit)
      3. join()   会阻塞，编译时不会抛异常
      4. getNow()  不会阻塞
      5. complete()


  对结果进行处理：
      1. thenApply()  使用调用者执行
      1. thenApplyAsync()  使用指定线程池或者默认的的线程池执行
      2. handle()  使用调用者执行
      2. handleAsync()  使用指定线程池或者默认的的线程池执行

  API说明：
    runAsync()     无返回值,可指定线程池
    supplyAsync()  有返回值,可指定线程池
    thenApply(Function<? super T,? extends U>)
    whenComplete(BiConsumer<? super T(上一步计算的结果), ? super Throwable(异常)>) :对结果进行处理
    exceptionally(Function<Throwable, ? extends T>)  处理异常结果
    thenAccept()处理正常结果
    thenApplyAsync()用于串行化另一个CompletableFuture
    anyOf()和allOf()用于并行化多个CompletableFuture

    xxxAsync方法 ：使用指定线程池或者默认的的线程池执行

 */
